package com.oa.service.impl;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;

import javax.annotation.Resource;

import org.apache.struts2.ServletActionContext;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.oa.dao.TemplateDao;
import com.oa.entity.Template;
import com.oa.service.TemplateService;
import com.oa.util.UploadUtil;

/**
 * @author FengMengHuo 模板服务类的实现
 */
@Service("templateService")
@Transactional
public class TemplateServiceImpl implements TemplateService {

	@Resource(name = "templateDao")
	private TemplateDao templateDao;

	// 查看所有申请模板
	public List<Template> findTemplateList() {
		return templateDao.findAllEntity();

	}

	// 添加申请模板
	public void addTemplate(Template template) {
		File upload = template.getUpload();
		String path = UploadUtil.getPath(upload);
		template.setUploadPath(path);
		templateDao.saveEntity(template);
	}

	// 根据ID 查询模板信息
	public Template findTemplateById(Template template) {
		return templateDao.getEntity(template.getUnique_id());
	}

	// 修改模板
	public void updateTemplate(Template template) {
		System.out.println(template.getUploadPath()+"==aaaa=="+template.getUpload());
		// 已上传文件的路径
		String oldPath = template.getUploadPath();
		// 使用upload判断是否上传了新的模板文件
		File upload = template.getUpload();
		if (upload != null) {// 说明上传了新的模板文件
			// 删除旧的文件
			File oldFile = new File(oldPath);
			if (oldFile.exists()) {
				oldFile.delete();
			}
			// 上传新的文件
			String path = UploadUtil.getPath(upload);
			// 在保存的对象中添加新的路径path
			template.setUploadPath(path);
		}
		// 按照ID更新数据库
		templateDao.updateEntity(template);
	}
	// 根据ID删除模板
	public void deleteTemplateById(Template template) {
		//获取申请模板ID
		//使用id获取申请模板的详细信息
		Template template1 = templateDao.getEntity(template.getUnique_id());
		//获取路径path，用删除文件
		String path = template1.getUploadPath();
		//删除文件
		File file = new File(path);
		if(file.exists()){
			file.delete();
		}
		//使用ID删除数据库的信息
		templateDao.deleteEntity(template1);
	}
	// 模板下载
	public InputStream downloadTemplate(Template template) {
		//使用id获取申请模板的详细信息
		Template template1 = templateDao.getEntity(template.getUnique_id());
		InputStream inputStream = null;
		try {
			//获取路径path
			String path = template1.getUploadPath();
			//获取模板的名称用作下载文件的名称
			String filename = template1.getTemplate_name();
			//将filename转成iso8859-1的形式，用作在xml
			filename = new String(filename.getBytes("GBK"),"iso8859-1");
			//将filename使用request传递给struts.xml，用来对下载文件的命名
			ServletActionContext.getRequest().setAttribute("fileName", filename);
			//使用路径path找到对应的文件
			File file = new File(path);
			inputStream = new FileInputStream(file);
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
		return inputStream;
	}
}
